﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once

#include "GcmpIfcInterface.h"
#include "GbmpQuickCast.h"
#include "OwnerPtr.h"
#include "IIfcEntity.h"

namespace gcmp
{
    /// \brief IFCEnity迭代器类
    class GCMP_IFC_INTERFACE_EXPORT IIfcEntityIterator
    {
        DEFINE_CAST_BASE(gcmp::IIfcEntityIterator);

    public:
        /// \brief 指向下一个IfcEntity
        /// \return void
        virtual void MoveNext() = 0;

        /// \brief 当前遍历是否已经指向结尾
        /// \return true: 遍历结束; false: 遍历未结束
        virtual bool IsDone() const = 0;

        /// \brief 获取当前指向的IfcEntity
        /// \return 返回当前的IfcEntity
        virtual OwnerPtr<IIfcEntity> GetCurrent() const = 0;
    };
}
